<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen">
</head>
<body>
    <div class="entry"> 
 <p>本组函数用于处理文件。</p> 
 <p>存放工作文件的三个目录(含子目录):</p> 
 <ul> 
  <li>/HISTORY/&lt;当前经纪商&gt; – 特别提供的FileOpenHistory函数: </li> 
  <li>/EXPERTS/FILES – 公用目录; </li> 
  <li>/TESTER/FILES – 测试专用。 </li> 
 </ul> 
 <p>禁止访问来自于其他目录的工作文件。</p> 
 <ul id="toc_l"> 
  <li><strong><a href="#FileClose">FileClose()</a></strong> – 关闭文件 </li> 
  <li><strong><a href="#FileDelete">FileDelete()</a></strong> – 删除文件 </li> 
  <li><strong><a href="#FileFlush">FileFlush()</a></strong> – 清除文件缓冲区并存盘 </li> 
  <li><strong><a href="#FileIsEnding">FileIsEnding()</a></strong> – 判断文件指针是否到文件尾 </li> 
  <li><strong><a href="#FileIsLineEnding">FileIsLineEnding()</a></strong> – 判断文件指针是否指向行尾 </li> 
  <li><strong><a href="#FileOpen">FileOpen()</a></strong> – 打开文件 </li> 
  <li><strong><a href="396.html#FileOpenHistory">FileOpenHistory()</a></strong> – 打开历史目录下文件 </li> 
  <li><strong><a href="396.html#FileReadArray">FileReadArray()</a></strong> – 文件读取到数组 </li> 
  <li><strong><a href="396.html#FileReadDouble">FileReadDouble()</a></strong> – 从文件读取浮点型数据 </li> 
  <li><strong><a href="396.html#FileReadInteger">FileReadInteger()</a></strong> – 从文件读取整型数据 </li> 
  <li><strong><a href="396.html#FileReadNumber">FileReadNumber()</a></strong> – 从文本文件读取数值 </li> 
  <li><strong><a href="396.html#FileReadString">FileReadString()</a></strong> – 从文件读取字符串 </li> 
  <li><strong><a href="396.html#FileSeek">FileSeek()</a></strong> – 移动文件指针 </li> 
  <li><strong><a href="397.html#FileSize">FileSize()</a></strong> – 获取文件大小 </li> 
  <li><strong><a href="397.html#FileTell">FileTell()</a></strong> – 获取文件指针位置 </li> 
  <li><strong><a href="397.html#FileWrite">FileWrite()</a></strong> – 写入CSV文件 </li> 
  <li><strong><a href="397.html#FileWriteArray">FileWriteArray()</a></strong> – 数组内容写入文件 </li> 
  <li><strong><a href="397.html#FileWriteDouble">FileWriteDouble()</a></strong> – 双精度数值写入文件 </li> 
  <li><strong><a href="397.html#FileWriteInteger">FileWriteInteger()</a></strong> – 整型数值写入文件 </li> 
  <li><strong><a href="397.html#FileWriteString">FileWriteString()</a></strong> – 字符串写入文件 </li> 
 </ul> 
 <p>&nbsp;</p> 
 <h2><a name="FileClose"></a>FileClose() – 关闭文件</h2> 
 <pre class="brush: mql4; toolbar: false;">void FileClose(int handle)</pre> 
 <p>关闭之前用FileOpen()函数打开的文件。</p> 
 <p>参数:</p> 
 <pre>handle - FileOpen() 函数 返回的文件句柄</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;"> int handle=FileOpen("filename", FILE_CSV|FILE_READ);
  if(handle&gt;0)
    {
     // 运行文件 ...
     FileClose(handle);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileDelete"></a>FileDelete() – 删除文件</h2> 
 <pre class="brush: mql4; toolbar: false;">void FileDelete(string filename)</pre> 
 <p>删除指定的文件。</p> 
 <p>如果想获取详细的错误信息，请调用 <a href="386.html#GetLastError">GetLastError()</a> 函数。如果文件是在terminal_ dir\experts\files日录(在测试情况下，terminal_ directory\tester\files)或它的子目录，仅仅删除这个文件。</p> 
 <p>参数:</p> 
 <pre>filename - 目录和文件名。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  // 将目录 terminal_dir\experts\files directory 下的 my_table.csv 文件删除
  int lastError;
  FileDelete("my_table.csv");
  lastError=GetLastError();
  if(laseError!=ERR_NOERROR)
    {
     Print("错误 (",lastError,") 删除文件my_table.csv");
     return(0);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileFlush"></a>FileFlush() – 清除文件缓冲区并存盘</h2> 
 <pre class="brush: mql4; toolbar: false;">void FileFlush(int handle)</pre> 
 <p>清除缓存中数据并存到磁盘上。</p> 
 <p>注: FileFlush()函数只能在文件读写操作中调用。</p> 
 <p>文件关闭时，数据将自动保存到磁盘，因此，在调用 <a href="#FileClose">FileClose()</a> 函数之前没有必要调用 FileFlush() 函数。</p> 
 <p>参数:</p> 
 <pre>handle - FileOpen()函数 返回的文件句柄。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int bars_count=Bars;
  int handle=FileOpen("mydat.csv",FILE_CSV|FILE_WRITE);
  if(handle&gt;0)
    {
     FileWrite(handle, "#","OPEN","CLOSE","HIGH","LOW");
     for(int i=0;i&lt;bars_count;i++)
       FileWrite(handle, i+1,Open[i],Close[i],High[i], Low[i]);
     FileFlush(handle);
     ...
     for(int i=0;i&lt;bars_count;i++)
       FileWrite(handle, i+1,Open[i],Close[i],High[i], Low[i]);
     FileClose(handle);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileIsEnding"></a>FileIsEnding() – 判断文件指针是否到文件尾</h2> 
 <pre class="brush: mql4; toolbar: false;">bool FileIsEnding(int handle)</pre> 
 <p>如果文件指针是在文件尾，返回true，否则，返回false。</p> 
 <p>如果想获取详细的错误信息，请调用 <a href="386.html#GetLastError">GetLastError()</a> 函数。如果文件指针在只读期间到达文件尾，<a href="386.html#GetLastError">GetLastError()</a> 函数将 <a href="377.html#Error_codes">返回错误</a> ERR_END_OF_FILE(4099)。</p> 
 <p>参数:</p> 
 <pre>handle - FileOpen()函数 返回的文件句柄。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  if(FileIsEnding(h1))
    {
     FileClose(h1);
     return(false);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileIsLineEnding"></a>FileIsLineEnding() – 判断文件指针是否指向行尾</h2> 
 <pre class="brush: mql4; toolbar: false;">bool FileIsLineEnding(int handle)</pre> 
 <p>如果CSV文件指针指向行末，返回true，否则，返回false。</p> 
 <p>如果想获取详细的错误信息，请调用 <a href="386.html#GetLastError">GetLastError()</a> 函数。</p> 
 <p>参数:</p> 
 <pre>handle - FileOpen()函数 返回的文件句柄。</pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  if(FileIsLineEnding(h1))
    {
     FileClose(h1);
     return(false);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 
 <h2><a name="FileOpen"></a>FileOpen() – 打开文件</h2> 
 <pre class="brush: mql4; toolbar: false;">int FileOpen( string filename, int mode, void delimiter)</pre> 
 <p>为输入或输出信息而打开文件。如果打开文件成功，返回句柄，否则，返回-1。如果想获取详细的错误信息，请调用 <a href="386.html#GetLastError">GetLastError()</a> 函数。</p> 
 <p><strong>注</strong>：文件只能在terminal_ directory\experts\files文件夹(智能交易测试在terminal_directory\tester\files目录)或子目录内被打开。</p> 
 <p>FILE_BIN 和 FILE_CSV 格式不能同时使用。</p> 
 <p>如果FILE_WRITE 与FILE_READ不组合使用，打开的文件长度为零。如果文件包含数据，它们能被删除。如果有必要向现存文件中添加数据，必须使用FILE_WRITE 与FILE_READ组合打开文件。</p> 
 <p>如果FILE_WRITE 与FILE_READ不组合使用，只能打开现存文件。如果文件不存在，可以使用 FILE_WRITE 模式创建。</p> 
 <p>在一个模块内最多能够同时打开32个文件。在同个模块内文件打开的句柄不能传递给其它模块(库)。</p> 
 <p>参数:</p> 
 <pre>filename - 文件名称
mode - 打开模式。可以是以下的一种或是多种组合: FILE_BIN, FILE_CSV, FILE_READ, FILE_WRITE。
delimiter - csv 文件的限定符。默认为 ';' 符号。 </pre> 
 <p>示例:</p> 
 <pre class="brush: mql4; toolbar: false;">  int handle;
  handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';');
  if(handle&lt;1)
    {
     Print("未找到 my_data.dat 文件，错误", GetLastError());
     return(false);
    }</pre> 
 <div class="divider top-of-page">
  <a title="Top of Page" href="#top">Back to Top</a>
 </div> 本文地址：
 <a href="395.html" rel="bookmark"><b>395.html</b></a> 
</div>
</body>
</html>